<?php
require_once('Arquitectura/AbstractFas.php');
/*******************************************************
/* Autor : Efrain Gutierrez / Miguel Ortiz
/* Fecha : 11/04/2013
/* Lenguaje: PHP version: 5.4.7
/* Descripción: Clase encargada de las funciones de los Opciones SEM
/********************************************************/

class Opcion extends Clases\AbstractFas
{
    /*Atributos Globales*/
    private $idOpcion,$texto,$respuesta;
    
    /********************************************************
    /* _construct()
    /* Proposito: inicializar el objeto.
    /* Parametros : ninguno
    /* Limitaciones: ninguna.
    /* Retorna: ninguna
    /*********************************************************/    
    public function __construct()
    {
        parent::AbstractFas();
    }
   
    
    /********************************************************
    /* getIdOpcion()
    /* Proposito: regresar atributo idOpcion.
    /* Parametros : ninguno
    /* Limitaciones: debe de ser diferente de null.
    /* Retorna: el valor de idOpcion.
    /*********************************************************/
    public function getIdOpcion()
    {
        if($this->idOpcion!= null)
            return $this->idOpcion; 
    }
    
    /********************************************************
    /* getTexto()
    /* Proposito: regresar atributo texto.
    /* Parametros : ninguno
    /* Limitaciones: debe de ser diferente de null.
    /* Retorna: el valor de texto
    /*********************************************************/
    public function getTexto()
    {
        if($this->texto!= null)
            return $this->texto; 
    }
   
    /********************************************************
    /* setIdOpcion(int IdOpcion)
    /* Proposito: cambiar el valor del atributo idOpcion.
    /* Parametros : idOpcion
    /* Limitaciones: el nuevo valor debe de ser diferente de null.
    /* Retorna: nada
    /*********************************************************/    
    public function setIdOpcion($idOpcion)
    {
        if($idOpcion != null)
            $this->idOpcion= $idOpcion; 
    }
    
    /********************************************************
    /* setTexto(string texto)
    /* Proposito: cambiar el valor del atributo nombre.
    /* Parametros : texto
    /* Limitaciones: el nuevo valor debe de ser diferente de null.
    /* Retorna: nada
    /*********************************************************/
    public function setTexto($texto)
    {
        if($texto!= null)
            $this->texto= $texto; 
    }
    
    /********************************************************
    /* esRespuesta()
    /* Proposito: indicar si la opcion actual es la respuesta
    /* Parametros : Ninguna
    /* Limitaciones: Opcion creada
    /* Retorna: Verdadero/Falso
    /*********************************************************/
    public function esRespuesta()
    {
        if($this->respuesta!= null)
            return $this->respuesta;
    }
    
    /********************************************************
    /* getOpcionesDeProblema(int idProblema)
    /* Proposito: buscar opciones en la base de datos de cierto problema
    /* Parametros : id del problema a buscar opciones
    /* Limitaciones: Ninguna
    /* Retorna: Lista de opciones
    /*********************************************************/
    public function getOpcionesDeProblema($idProblema)
    {
        $result = $this->exec("select ".$this->id." from ".$this->tabla." where IdProblema = ".$idProblema);
        $lst = array();
        while ($row = mysql_fetch_row($result)) {
            $opcion = $this->get($row[0]);
            array_push($lst, $opcion);
        }
        return $lst;
    }

    /********************************************************
    /* comandos()
    /* Proposito: validar la existencia de un Opcion en la base de datos.
    /* Parametros : ninguno
    /* Limitaciones: Opcion inicializado.
    /* Retorna: Verdadero o Falso
    /*********************************************************/
   
    protected function comandos() {
        $this->id = "IdOpcion";
        $this->tabla = "`opcion`";
        $this->strDelete = "DeleteOpcion";
        $this->strInsertar = "InsertarOpcion";
        $this->strUpdate = "UpdateOpcion";
    }
    
    /********************************************************
    /* fillFas(my_sql_row row)
    /* Proposito: inicializar un Opcion con la info de la base de datos.
    /* Parametros : row de consulta
    /* Limitaciones: row completo mysql
    /* Retorna: Ninguna
    /*********************************************************/
    protected function fillFas($row) {
        $row = mysql_fetch_row($row);
        $this->idOpcion = $row[0];
        $this->respuesta = $row[2];
        $this->texto = $row[4];
    }

    /********************************************************
    /* get(int id)
    /* Proposito: inicializar un Opcion a partir de un id desde una base de datos.
    /* Parametros : id del Opcion
    /* Limitaciones: Ninguna
    /* Retorna: Opcion
    /*********************************************************/
    public function get($id) {
        $abs = $this->getAbstractFas(new Opcion(),$id,$this->tabla,$this->id);
        return $abs;
    }
    
    /********************************************************
    /* getAll
    /* Proposito: inicializar lista de Opciones existentes desde una base de datos.
    /* Parametros : Ninguna
    /* Limitaciones: Ninguna
    /* Retorna: Lista de Opciones
    /*********************************************************/
   
    public function getAll() {
        $abs = $this->getAllAbstract($this->tabla,$this->id,new Opcion());
        return $abs;
    }
    
    /********************************************************
    /* getAtributos()
    /* Proposito: regresar arreglo de atributos locales
    /* Parametros : Ninguna
    /* Limitaciones: Ninguna
    /* Retorna: Arreglo
    /*********************************************************/
   
    public function getAtributos() {
        $lst = array();
        array_push($lst,$this->idOpcion);
        array_push($lst,$this->texto);
        array_push($lst,$this->respuesta);
        return $lst;
    }
} // fin de la clase Opcion

?>
